# !/usr/bin/env python
# -*- coding: utf-8 -*-
from pprint import pprint

from django.forms import ModelForm
from django.http import JsonResponse
from django.shortcuts import render, redirect
from django.views.decorators.csrf import csrf_exempt

from mytest import models
from mytest.utils.forms import *
from mytest.utils.pagination import Pagination
from mytest.utils.common_crud import ComCrud


def admin_list(request):
    """ 管理员列表 """

    # # 检查用户是否已登录，继续想下走，未登陆，跳转回登陆页面。
    # # 用户发来请求，获取cookie随机字符，拿来随机字符串看看session中有没有。
    # info = request.session.get('info')
    # if not info:
    #     return redirect("/mytest/login")

    # 1. 获取到搜索关键字
    keyword = request.GET.get('keyword', "")

    # 2. 传入搜索参数，并使用id倒序排序
    search = {
        "username__contains": keyword
    }
    queryset_result = models.Admin.objects.all().order_by('-id').filter(**search)

    # 3. 分页工具需要的实参参数。最后获取分页的各种数据，一起返回给前端进行处理。
    parameter = {
        "request": request,
        "queryset": queryset_result,
        "page_size": 10
    }
    data = Pagination(**parameter).get_content()

    # 4. 加个form返回给前端，用于取出字段的名称。给数据列头
    form = AdminModelForm()  # 这里需要一个form,但是查询要form干嘛？？哦哦，需要他的label，idea:可以使用查询头部获取试试？不行，取出来的必须是中文，不然我设置它干嘛……
    data['form'] = form

    # 5. 返回响应结果。
    response = {
        "code": 200,
        "msg": "操作成功",
        "data": data
    }
    return render(request, "mytest/admin/admin_detail.html", response)


@csrf_exempt
def admin_add(request):
    """ 添加管理员 """

    return ComCrud().get_add(request, "Admin")


def admin_edit(request):
    """ 编辑管理员 """

    return ComCrud().get_edit(request, "Admin")


def admin_reset(request, nid):
    """ 重置密码 """
    pass
    # row_object = models.Admin.objects.filter(id=nid).filter()
    #
    # # 如果没有查到数据，重定向到页面
    # if not row_object:
    #     return redirect("mytest/admin/admin_detail.html")
    #
    # # 如果是GET请求，那么将查询到的数据进行回填
    # if request.method == "GET":
    #     form = AdminResetModelForm(instance=row_object)
    #     return render(request, "", {"form": form})
    #
    # # 不是GET就是POST了，那么进行修改。
    # form = AdminResetModelForm(data=request.POST, instance=row_object)
    # if form.is_valid():
    #     form.save()
    #     return redirect("")


@csrf_exempt
def admin_delete(request):
    """ 删除管理员 """

    return ComCrud().get_delete(request, "Admin")
